package com.enum_;

/**
 * @Author 小闽
 * @Date 2024/9/21 11:22
 * @PackageName: com.enum_
 * @ClassName: Enumeration03
 * @Description: enum关键字实现枚举
 * @Version 1.0
 */
public class Enumeration03 {
    public static void main(String[] args) {
        System.out.println(Season2.SPRING);
    }
}

// 季节类
enum  Season2{

    // 定义四个对象
//    public static final Season SPRING = new Season("春天","温暖");
//    public static final Season WINTER = new Season("冬天","寒冷");
//    public static final Season AUTUMN = new Season("秋天","凉爽");
//    public static final Season SUMMER = new Season("夏天","炎热");
    // 1. 如果要使用enum关键字去实现枚举类，enum就是class
    // 2. enum定义的枚举类中的枚举对象是通过对象名(实参)去实现的
    // 3. 如果枚举（对象）常量之间有多个需要有逗号 ","间隔开
    // 4. enum枚举对象需要放在枚举类的第一行的位置
    SPRING("春天","温暖"),
    WINTER("冬天","寒冷"),
    AUTUMN("秋天","凉爽"),
    SUMMER("夏天","炎热");
    // 季节名称
    private String name;
    // 季节描述
    private String desc;
    /**
     * 构造方法
     * @param name
     * @param desc
     */
    //1. 将构造方法进行私有化，防止在主方法中直接去new对象
    //2. 去掉setXxx方法，因为对于季节来说是只读的，而不能去任意的修改。
    //3. 由于在类中去使用静态的属性或静态的对象会让jvm对类进行加载，如果要性能优化，可以加入final关键字
    private Season2(String name, String desc) {
        this.name = name;
        this.desc = desc;
    }

    public String getName() {
        return name;
    }

    public String getDesc() {
        return desc;
    }

    @Override
    public String toString() {
        return "Season{" +
                "name='" + name + '\'' +
                ", desc='" + desc + '\'' +
                '}';
    }
}
